Data networks have become increasingly important in day-to-day activities and business applications. Most of these networks are a packet-switched network, such as the Internet, which uses a Transmission Control Protocol (TCP) and an Internet Protocol (IP), frequently referred to as TCP/IP. The Transmission Control Protocol manages the reliable reception and transmission of network traffic, while the Internet Protocol is responsible for routing to ensure that packets are sent to a correct destination.
In a typical network, a mesh of transmission links are provided, as well as switching nodes and end nodes. End nodes typically ensure that any packet is received and transmitted on the correct outgoing link to reach its destination. The switching nodes are typically referred to as packet switches, or routers, or intermediate systems. The sources and destinations in data traffic (the end nodes) can be referred to as hosts and end systems. These hosts and end systems typically are the personal computers, work stations and other terminals.
To help move information between computers, the open system interconnection (OSI) model has been developed. Each problem of moving information between computers is represented by a layer in the model, and thus, establishes a framework for standards. Two systems communicate only between layers in a protocol stack. However, it is desirable to communicate with a pure layer in the other system, and to achieve such results, information is exchanged by means of protocol data units (PDUs), also known as packets. The PDUs include headers that contain control information, such as addresses, as well as data. At a source, each layer adds its own header, as is well known to those skilled in the art. The seven layers, starting at the physical layer, include: (1) physical; (2) data link; (3) network; (4) transport; (5) session; (6) presentation; and (7) application layers.
The network systems typically use routers that can determine optimum paths, by using routing algorithms. The routers also switch packets arriving at an input port to an output port based on the routing path for each packet. The routing algorithms (or routing protocols) are used to initialize and maintain routing tables that consist of entries that point to a next router to send a packet with a given destination address. Typically, fixed costs are assigned to each link in the network and the cost reflects link bandwidth and/or costs. The least cost paths can be determined by a router after it exchanges network topology and link cost information with other routers.
The two lower layers, the physical and data link layers, are typically governed by a standard for local area networks developed by the IEEE 802 Committee. The data link layer is typically divided into two sublayers, the logical link control (LLC) sublayer, which defines functions such as framing, flow control, error control and addressing. The LLC protocol is a modification of the HDLC protocol. A medium access control (MAC) sublayer controls transmission access to a common medium.
High-level data link control (HDLC) is a communications control procedure for checking the accuracy of data transfer operations between remote devices, in which data is transferred in units known as frames, and in which procedures exist for checking the sequence of frames, and for detecting errors due to bits being lost or inverted during transfer operations. There are also functions which control the set-up and termination of the data link. In HDLC, the bit synchronous data communication across a transmission link is controlled. HDLC is included in the ITU packet-switching interface standard known as X.25.
Programmable HDLC protocol controllers are commonly used in these systems. An HDLC controller is a computer peripheral-interface device which supports the International Standards Organization (ISO) high-level-data-link-control (HDLC). It reduces the central processing unit or microprocessor unit (MPU) software by supporting a frame-level instruction set and by hardware implementation of the low-level tasks associated with frame assembly-disassembly and data integrity.
Most communication protocols are bit-oriented, code-dependent, and ideal for full duplex communication. Some common applications include terminal-to-terminal, terminal-to-MPU, MPU-to-MPU, satellite communication, packet switching, and other high-speed data links.
A communication controller relieves a central MPU of many of the tasks associated with constructing and receiving frames. A frame (sometimes referred to as a packet) is a single communication element which can be used for both link-control and data-transfer purposes.
Most controllers include a direct memory access (DMA) device or function which provides access to an external shared memory resource. The controller allows either DMA or non-DMA data transfers. The controller accepts a command from the MPU, executes the command, and provides an interrupt and result back to the MPU.
Typically, when a packet comes into the receive memory, typically a first-in/first-out (FIFO) memory, there would be bursts of data, which continued until the packet was reassembled into external memory, such as a shared system memory. An interrupt would issue to the host processor, telling the host processor that a packet was available for examination. This type of scheme is classically referred to as store and forward (SF) architecture. The host device is obligated to wait until the entire frame has been read off the wire and ownership of the associated external memory buffer has been reassigned before routing can take place. As the length of a frame increases, then so does the latency of the routing process. Performance becomes difficult to predict because the host is denied knowledge of the length of incoming frames, even though this information is contained in the header of every frame. As the length of a packet (or frame) increases, there is a delay. The time that the host gets to the frame is in some sense dependent on the length of the packet. If one wants to build a fast system, it is desirable to decouple length and time.
A competing scheme is known as “cut through” (C/T). In this type of system, fragments of a packet or frame are moved into the external host memory, i.e., the shared system memory. The host processor is able to look at that portion of data, e.g., frame, at any time. For example, the processor looks at what exit port the packet should be moved, and initiates an address look up with the appropriate look-up algorithm. As long as the address fields are available, then the “cut through” architecture is available. Frames move from receive ports to transmit ports in constant bursts without the processor examining the contents. This process expedites movement, but at the cost of replicating errored frames across networks. Often, due to contention, or the convergence of multiple frames to the same destination port, cut-through develops back into store-and-forward because of the necessity to buffer waiting frames.
Overall, this was thought to be advantageous because the host processor would not have to wait until the end of the frame came in, but may still have part of the frame at the sending station. A problem, however, is that any problem on the wire could cause a malfunctioning or corrupt frame to occur. Thus, corrupt or bad frames would be propagated on the network.